package com.zpark.se.io.reader;

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;

/**
 * Reader类：字符输入流
 * 尽管 Java 中字节流的功能十分强大，几乎可以直接或间接地处理任何类型的输入/输出操作，
 * 但利用它却不能直接操作 16 位的 Unicode 字符。这就要用到字符流。
 * Reader 类是所有字符流输入类的父类，该类定义了许多方法，这些方法对所有子类都是有效的。
 * Reader类是一个抽象类，因此不能直接new对象，需要使用子类创建对象，
 * 常用子类FileReader、StringReader、BufferedReader类等
 */
public class Demo01 {
    public static void main(String[] args) throws Exception {
        // 定义文件的路径
        String path = "src/com/zpark/se/io/reader/a/a.txt";
        // 创建FileReader类对象
        FileReader sr = new FileReader(path);

        // 常用方法

        /*
         * read()：读取一个字符，返回一个int值，如果已经到达文件末尾，则返回-1
         */
        /*int read = sr.read();
        System.out.println(read);*/

        // 定义字符数组
        char[] data = new char[8];
        int len = 0;
        // 循环读取文件数据
        while ((len = sr.read(data)) != -1) {
            // 输出读取的数据
            System.out.print(new String(data, 0, len));
        }

        /*
         * ready()：判断流是否已经准备好，如果可以读取，返回true，否则返回false
         */
        boolean ready = sr.ready();

        // 关闭流
        sr.close();
    }
}
